<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <title>文档</title>
  <link href="./css/semantic/semantic.min.css" rel="stylesheet">
  <link href="./css/markdown.css" rel="stylesheet">
  <link href="./css/wtxynavigation.css" rel="stylesheet">
  <script src="./js/jquery.min.js"></script>
  <script type="text/javascript" src="./js/include.js"></script>
  <style>
    body{padding-top:0;background:#f7f7f7}
    body>.ui.container{width:100%;padding:0}
    #project-title{background:#6e6e6e;width:100%;line-height:3.572rem;color:#fff;font-size:1.2rem}
    #project-title .title-wrap{font-weight:700;padding:0 12px;width:100%;max-width:1366px!important;min-width:900px;margin:0 auto}
    #project-title .left,#project-title right{display:inline-block}
    #project-title .right{float:right}
    #project-title .right .wiki-actions .menu{left:auto;right:0;margin-top:.4em!important}
    #wiki-preview-container{width:100%;max-width:1366px!important;min-width:900px;padding:0;border:1px solid #e3e9ed;border-top:0}
    #wiki-preview>.ui.segment{margin-top:0;padding:1rem;padding-left:0;border:0}
    .hover-places{display:inline-block}
    #page-detail{width:60%;margin:0 auto}
    #page-detail .title{font-weight:700;font-size:24px;padding:12px 0;border-bottom:1px solid #ccc}
    #page-detail .content{margin-top:15px}
    .content p{word-wrap:break-word}
    #wiki-parent,#wiki-title,#wikis{display:none}
    .ui.grid{padding:0!important}
    #ex-all{cursor:pointer;color:#537c8d}
  </style>
</head>
<body>
  <div class="ui container">
    <div id="project-title">
      <div class="title-wrap">
        <div class="left">
          <i class="icon eye"></i>
          文档预览:
          mianmSDK
        </div>
        <div class="right">
          Export by Gitee
        </div>
      </div>
    </div>

    <div class="ui container" id="wiki-preview-container">
      <div id="wiki-preview">
        <div class="ui segment">
          <div id="page-detail" class="markdown-body">
            <div class='title'>iOS_imageNamed和imageWithContentsOfFile区别</div><div class='content'><h1>
<a id="ios-imagenamed和imagewithcontentsoffile区别" class="anchor" href="#ios-imagenamed%E5%92%8Cimagewithcontentsoffile%E5%8C%BA%E5%88%AB"></a>iOS imageNamed和imageWithContentsOfFile区别</h1>
<h2>
<a id="1imagenamed" class="anchor" href="#1imagenamed"></a>1.imageNamed：</h2>
<pre><code>
UIImage image = [UIImage imageNamed:@"pic"]; 
//文件名
//有缓存

</code></pre>
<p>获取到的对象是<code>autorelease</code>的。
这个方法有点特殊，它在生成<code>image</code>对象的同时，会把图像数据 根据它的名字缓存在系统内存中，以提高<code>imageNamed</code>方法获得相同图片的<code>image</code>对象的性能。 即使生成的对象被 <code>autoreleasePool</code>释放了，这份缓存也不释放。 这对与在应用中有 <strong>大量相同图片</strong> 时，非常有用，可以提高性能和内存利用率。</p>
<h2>
<a id="2imagewithcontentsoffile-" class="anchor" href="#2imagewithcontentsoffile-"></a>2.imageWithContentsOfFile ：</h2>
<pre><code>UIimage image = [UIImage imageWithContentsOfFile:@"path"] 
//文件路径
//无缓存


</code></pre>
<p>得到的对象时<code>autoRelease</code>的，当<code>autoReleasePool</code>释放时才释放。
不系统缓存。</p>
<h2>
<a id="3-答" class="anchor" href="#3-%E7%AD%94"></a>3. 答:</h2>
<ol>
<li>前者有缓存, 后者没有缓存.</li>
<li>
<code>imageNamed</code> 取到的对象是<code>autorelease</code>的.</li>
<li>
<code>imageWithContentsOfFile</code>得到的对象时<code>autoRelease</code>的，当<code>autoReleasePool</code>释放时才释放。不系统缓存。</li>
<li>大量相同图片用<code>imageNamed</code>
</li>
<li>通过网络下载一个很大的图像时，请尽量使用imageWithData的方式加载图像</li>
<li>
<code>imageWithContentsOfFile</code>耗时和内存 有巨大消耗</li>
</ol></div>
          </div>
        </div>
      </div>
      </div>
  </div>
</body>
</html>